
import random
from typing import List


def generate_sorted_array(length=None, min_val=-1000, max_val=1000):
    """生成随机有序数组"""
    if length is None:
        length = random.randint(0, 20)  # 随机长度，包括空数组

    if length == 0:
        return []

    # 生成随机不重复的元素
    elements = random.sample(range(min_val, max_val + 1), length)
    # 排序
    elements.sort()
    return elements


def generate_test_cases(num_cases=10):
    """生成多个测试用例"""
    test_cases = []
    # 包含特殊情况
    test_cases.append([])  # 空数组
    test_cases.append([0])  # 单元素
    test_cases.append([1, 2])  # 双元素
    test_cases.append([1, 2, 3])  # 三元素
    test_cases.append([-10, -3, 0, 5, 9])  # 示例用例

    # 生成随机测试用例
    for _ in range(num_cases - len(test_cases)):
        test_cases.append(generate_sorted_array())

    return test_cases


def generate_max_product_test_cases(num_cases=10):
    """生成最大乘积子数组的测试用例"""
    test_cases = []

    # 示例测试用例
    test_cases.append([2, 3, -2, 4])  # 预期输出: 6
    test_cases.append([-2, 0, -1])  # 预期输出: 0
    test_cases.append([-2, 3, -4])  # 预期输出: 24
    test_cases.append([0, 2])  # 预期输出: 2
    test_cases.append([-1, -2, -3])  # 预期输出: 6

    # 生成随机测试用例
    for _ in range(num_cases - len(test_cases)):
        length = random.randint(1, 10)
        nums = [random.randint(-10, 10) for _ in range(length)]
        test_cases.append(nums)

    return test_cases